home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / flight-of-the-museum.swf / scripts / engine / GameUI.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  12.9 KB  |  404 lines

  1. package engine
  2. {
  3.    import copy.CopyBank;
  4.    import flash.display.MovieClip;
  5.    import flash.events.Event;
  6.    import flash.events.KeyboardEvent;
  7.    import flash.events.MouseEvent;
  8.    import flash.geom.Rectangle;
  9.    import flash.ui.Keyboard;
  10.    
  11.    [Embed(source="/_assets/assets.swf", symbol="engine.GameUI")]
  12.    public class GameUI extends MovieClip
  13.    {
  14.        
  15.       
  16.       private var _gameoverScreenTimer:Number = 0;
  17.       
  18.       public var _btn_sound:MovieClip;
  19.       
  20.       private var _scoreOffset:Number = 0;
  21.       
  22.       private var _lives:Number;
  23.       
  24.       private var _scoreStripArray:Array;
  25.       
  26.       public var _victoryScreen:MovieClip;
  27.       
  28.       public var _missionScreen:MovieClip;
  29.       
  30.       private var _currentMessageVibe:String;
  31.       
  32.       public var _goalIndicator:MovieClip;
  33.       
  34.       private var _messageTimer:Number = 0;
  35.       
  36.       public var _fuelWarning:MovieClip;
  37.       
  38.       private var _victoryScreenTimer:Number = 0;
  39.       
  40.       public var _fuelDisplay:MovieClip;
  41.       
  42.       private var _fuelTFrame:Number = 0;
  43.       
  44.       public var _livesDisplay:MovieClip;
  45.       
  46.       private var _missionScreenTimer:Number = 0;
  47.       
  48.       private var _fuel:Number;
  49.       
  50.       public var _scoreDisplay:MovieClip;
  51.       
  52.       private var _scoreArray:Array;
  53.       
  54.       private var _score:Number;
  55.       
  56.       public var _btn_embed:MovieClip;
  57.       
  58.       public var _btn_menu:MovieClip;
  59.       
  60.       private var _fuelCFrame:Number = 0;
  61.       
  62.       private var _message:String;
  63.       
  64.       public var _popupGuys:MovieClip;
  65.       
  66.       public var _btn_pause:MovieClip;
  67.       
  68.       public var _soundOnOff:MovieClip;
  69.       
  70.       public var _gameoverScreen:MovieClip;
  71.       
  72.       public var _imgLogoDateSmall:MovieClip;
  73.       
  74.       public function GameUI()
  75.       {
  76.          _messageTimer = 0;
  77.          _missionScreenTimer = 0;
  78.          _victoryScreenTimer = 0;
  79.          _gameoverScreenTimer = 0;
  80.          _fuelTFrame = 0;
  81.          _fuelCFrame = 0;
  82.          _scoreOffset = 0;
  83.          super();
  84.          _livesDisplay.stop();
  85.          _fuelDisplay.stop();
  86.          _scoreDisplay.stop();
  87.          _scoreArray = new Array();
  88.          _missionScreen.visible = false;
  89.          _scoreDisplay.scrollRect = new Rectangle(0,4,154,21);
  90.       }
  91.       
  92.       public function setVictoryScreen() : *
  93.       {
  94.          _victoryScreenTimer = 130;
  95.          _victoryScreen.visible = true;
  96.          _victoryScreen.gotoAndPlay(1);
  97.       }
  98.       
  99.       public function setGameoverScreen() : *
  100.       {
  101.          trace("SET GAME OVER SCREEN");
  102.          _gameoverScreenTimer = 82;
  103.          _gameoverScreen.visible = true;
  104.          _gameoverScreen.resetInfo();
  105.       }
  106.       
  107.       public function init() : *
  108.       {
  109.          addEventListener("enterFrame",onGameUIEnterFrame);
  110.          _scoreArray = [0,0,0,0,0,0,0,0,0,0,0,0,0];
  111.          _scoreStripArray = [_scoreDisplay._0,_scoreDisplay._1,_scoreDisplay._2,_scoreDisplay._3,_scoreDisplay._4,_scoreDisplay._5,_scoreDisplay._6,_scoreDisplay._7,_scoreDisplay._8,_scoreDisplay._9,_scoreDisplay._10,_scoreDisplay._11,_scoreDisplay._12];
  112.          _fuelDisplay.gotoAndStop(99);
  113.          _missionScreen.alpha = 1;
  114.          addEventListener(Event.ADDED_TO_STAGE,onAddedToStage);
  115.          _missionScreen._beginButton.addEventListener(MouseEvent.CLICK,onBeginClick);
  116.          _missionScreen._beginButton.buttonMode = true;
  117.          _missionScreen._beginButton._tHolder._copy.text = CopyBank.Instance.BEGIN;
  118.          _btn_pause.addEventListener("CLICK",onBtnClick);
  119.          _btn_menu.addEventListener("CLICK",onBtnClick);
  120.          _btn_embed.addEventListener("CLICK",onBtnClick);
  121.          _btn_sound.addEventListener("CLICK",onBtnClick);
  122.          _btn_pause._tHolder._copy.text = CopyBank.Instance.PAUSE;
  123.          _btn_menu._tHolder._copy.text = CopyBank.Instance.MENU;
  124.          _btn_embed._tHolder._copy.text = CopyBank.Instance.SHARE;
  125.          _btn_sound._tHolder._copy.text = CopyBank.Instance.SOUND;
  126.          _imgLogoDateSmall.gotoAndStop(CopyBank.Instance.LANGUAGE);
  127.          _victoryScreen._line1._tHolder._copy.text = CopyBank.Instance.MISSION;
  128.          _victoryScreen._line2._tHolder._copy.text = CopyBank.Instance.COMPLETE;
  129.       }
  130.       
  131.       private function onGameUIEnterFrame(event:*) : *
  132.       {
  133.          var gNum:Number = NaN;
  134.          var i:* = undefined;
  135.          var strip:MovieClip = null;
  136.          var tY:Number = NaN;
  137.          gNum = 1;
  138.          if(WorldScene.Instance.MissionDetails.StartLoc.x != -1)
  139.          {
  140.             if(WorldScene.Instance.MissionDetails.GoalParamaters[0].Type == "Ring")
  141.             {
  142.                gNum = 3;
  143.             }
  144.             if(WorldScene.Instance.MissionDetails.GoalParamaters[0].Type == "Cage")
  145.             {
  146.                gNum = 2;
  147.             }
  148.             _goalIndicator._goalType.gotoAndStop(gNum);
  149.             _goalIndicator._num.text = WorldScene.Instance.MissionDetails.GoalParamaters[0].Count;
  150.          }
  151.          --_messageTimer;
  152.          if(_messageTimer > 0)
  153.          {
  154.             if(_popupGuys.y < -95)
  155.             {
  156.                _popupGuys._speech.scaleX += (1 - _popupGuys._speech.scaleX) * 0.25;
  157.                _popupGuys._speech.scaleY = _popupGuys._speech.scaleX;
  158.             }
  159.             _popupGuys.visible = true;
  160.             _popupGuys.y += (-118 - _popupGuys.y) * 0.25;
  161.          }
  162.          else
  163.          {
  164.             _popupGuys._speech.scaleX += (0 - _popupGuys._speech.scaleX) * 0.25;
  165.             _popupGuys._speech.scaleY = _popupGuys._speech.scaleX;
  166.             _popupGuys.y += (51 - _popupGuys.y) * 0.12;
  167.             if(_popupGuys.y > 49)
  168.             {
  169.                _popupGuys.visible = false;
  170.             }
  171.          }
  172.          for(i = 0; i < _scoreArray.length; i++)
  173.          {
  174.             strip = _scoreStripArray[(i + _scoreOffset) % 13];
  175.             tY = _scoreArray[i] / 9 * -160;
  176.             strip.y += (tY - strip.y) * 0.1;
  177.          }
  178.          if(Engine.Instance.State == Engine.Instance.STATES.MissionScreen)
  179.          {
  180.             _missionScreen.visible = true;
  181.             _missionScreen.alpha += (1 - _missionScreen.alpha) * 0.25;
  182.          }
  183.          else
  184.          {
  185.             _missionScreen.alpha += (0 - _missionScreen.alpha) * 0.25;
  186.             if(_missionScreen.alpha < 0.03)
  187.             {
  188.                _missionScreen.visible = false;
  189.             }
  190.          }
  191.          if(Engine.Instance.State == Engine.Instance.STATES.Gameover)
  192.          {
  193.             _gameoverScreen.visible = true;
  194.             _gameoverScreen.alpha += (1 - _gameoverScreen.alpha) * 0.25;
  195.          }
  196.          else
  197.          {
  198.             _gameoverScreen.alpha += (0 - _gameoverScreen.alpha) * 0.25;
  199.             if(_gameoverScreen.alpha < 0.03)
  200.             {
  201.                _gameoverScreen.visible = false;
  202.             }
  203.          }
  204.          if(Engine.Instance.State == Engine.Instance.STATES.Gameplay && _victoryScreenTimer > 0)
  205.          {
  206.             if(_victoryScreenTimer == 75)
  207.             {
  208.                Main.Instance.playSound("success");
  209.                WorldScene.Instance.displayBonusScore();
  210.             }
  211.             if(_victoryScreenTimer < 75)
  212.             {
  213.                _victoryScreen.visible = true;
  214.                _victoryScreen.alpha += (1 - _victoryScreen.alpha) * 0.125;
  215.             }
  216.             --_victoryScreenTimer;
  217.             if(_victoryScreenTimer == 0)
  218.             {
  219.                Engine.Instance.startMission();
  220.                _victoryScreen.alpha = 0;
  221.                _victoryScreenTimer = -1;
  222.                _victoryScreen.visible = false;
  223.             }
  224.          }
  225.          else if(Engine.Instance.State != Engine.Instance.STATES.Paused)
  226.          {
  227.             _victoryScreen.alpha = 0;
  228.             _victoryScreenTimer = -1;
  229.             _victoryScreen.visible = false;
  230.          }
  231.       }
  232.       
  233.       public function updateSoundDisplay() : *
  234.       {
  235.          if(Main.Instance.SoundOn)
  236.          {
  237.             _soundOnOff.gotoAndStop(1);
  238.          }
  239.          else
  240.          {
  241.             _soundOnOff.gotoAndStop(2);
  242.          }
  243.       }
  244.       
  245.       public function updateFuel(num:Number) : *
  246.       {
  247.          _fuelTFrame = 100 * (num / 100);
  248.          _fuelCFrame += (_fuelTFrame - _fuelCFrame) * 0.25;
  249.          _fuelDisplay.gotoAndStop(Math.floor(_fuelCFrame));
  250.          if(num == 10)
  251.          {
  252.             Engine.Instance.setPopupMessage(CopyBank.Instance.LowFuel);
  253.          }
  254.          if(num < 10)
  255.          {
  256.             _fuelWarning.alpha += (Math.sin(num * 8) - _fuelWarning.alpha) * 0.25;
  257.          }
  258.          else
  259.          {
  260.             _fuelWarning.alpha *= 0.9;
  261.          }
  262.       }
  263.       
  264.       public function removeListeners() : *
  265.       {
  266.          removeEventListener("enterFrame",onGameUIEnterFrame);
  267.       }
  268.       
  269.       public function updateScore(num:Number) : *
  270.       {
  271.          var ss:* = null;
  272.          var esc:Number = NaN;
  273.          ss = String(num);
  274.          esc = 0;
  275.          if(ss.length < 13)
  276.          {
  277.             _scoreOffset = 13 - ss.length;
  278.          }
  279.          else
  280.          {
  281.             _scoreOffset = 0;
  282.          }
  283.          while(ss.length < 13)
  284.          {
  285.             ss += "0";
  286.             esc++;
  287.             if(esc > 13)
  288.             {
  289.                trace("### there has been a gastronomical score display failure. abort mission");
  290.                break;
  291.             }
  292.          }
  293.          _scoreArray = [Number(ss.substr(0,1)),Number(ss.substr(1,1)),Number(ss.substr(2,1)),Number(ss.substr(3,1)),Number(ss.substr(4,1)),Number(ss.substr(5,1)),Number(ss.substr(6,1)),Number(ss.substr(7,1)),Number(ss.substr(8,1)),Number(ss.substr(9,1)),Number(ss.substr(10,1)),Number(ss.substr(11,1)),Number(ss.substr(12,1))];
  294.       }
  295.       
  296.       public function setMessage(msg:String, vibe:String) : *
  297.       {
  298.          if(!_popupGuys.visible || _currentMessageVibe == vibe)
  299.          {
  300.             if(vibe == "good")
  301.             {
  302.                if(!_popupGuys.visible)
  303.                {
  304.                   _popupGuys._charSource.gotoAndStop(Math.floor(Math.random() * (6 - 0.01)) + 1);
  305.                }
  306.             }
  307.             else if(!_popupGuys.visible)
  308.             {
  309.                _popupGuys._charSource.gotoAndStop(Math.floor(Math.random() * (5 - 0.01)) + 7);
  310.             }
  311.             _messageTimer = 100;
  312.             _popupGuys._speech._copy.text = msg;
  313.          }
  314.       }
  315.       
  316.       private function onAddedToStage(event:*) : *
  317.       {
  318.          stage.addEventListener(KeyboardEvent.KEY_DOWN,UIkeyDown);
  319.       }
  320.       
  321.       public function initCopy() : *
  322.       {
  323.          _gameoverScreen.initCopy();
  324.       }
  325.       
  326.       public function updateLives(num:Number, inFlashDisplay:Boolean = false) : *
  327.       {
  328.          if(num < 0)
  329.          {
  330.             num = 0;
  331.          }
  332.          if(num > 3)
  333.          {
  334.             num = 3;
  335.          }
  336.          _livesDisplay.gotoAndStop(num + 1);
  337.          if(inFlashDisplay)
  338.          {
  339.             _livesDisplay._flash.gotoAndPlay(2);
  340.          }
  341.       }
  342.       
  343.       private function onBtnClick(event:*) : *
  344.       {
  345.          switch(event.target)
  346.          {
  347.             case _btn_pause:
  348.                Engine.Instance.pauseToggle();
  349.                break;
  350.             case _btn_menu:
  351.                Main.Instance.endGame();
  352.                break;
  353.             case _btn_embed:
  354.                Main.Instance.Tracker.trackPageview("NATM2_Flight/menu/share");
  355.                Main.Instance.shareGame();
  356.                Engine.Instance.pauseToggle(true);
  357.                break;
  358.             case _btn_sound:
  359.                Main.Instance.toggleSound(_soundOnOff);
  360.          }
  361.       }
  362.       
  363.       private function UIkeyDown(event:*) : *
  364.       {
  365.          switch(event.keyCode)
  366.          {
  367.             case Keyboard.ENTER:
  368.                onBeginClick(event);
  369.          }
  370.       }
  371.       
  372.       public function setMissionScreen(missionNumber:Number) : *
  373.       {
  374.          if(missionNumber == 1)
  375.          {
  376.             _missionScreen.alpha = 1;
  377.          }
  378.          _missionScreenTimer = 82;
  379.          _missionScreen.visible = true;
  380.          switch(WorldScene.Instance.MissionDetails.PrimaryGoalType)
  381.          {
  382.             case "Tablets":
  383.                _missionScreen._missionGraphic.gotoAndPlay("Tablets");
  384.                break;
  385.             case "Cages":
  386.                _missionScreen._missionGraphic.gotoAndPlay("Cages");
  387.                break;
  388.             case "Rings":
  389.                _missionScreen._missionGraphic.gotoAndPlay("Rings");
  390.          }
  391.          _missionScreen._missionCopy._tHolder_mission._copy.text = CopyBank.Instance.MISSION + ": " + String(missionNumber);
  392.          _missionScreen._missionCopy._tHolder_missionBrief._copy.text = WorldScene.Instance.MissionDetails.Description;
  393.       }
  394.       
  395.       private function onBeginClick(event:*) : *
  396.       {
  397.          if(Engine.Instance.State == Engine.Instance.STATES.MissionScreen)
  398.          {
  399.             Engine.Instance.startGameplay();
  400.          }
  401.       }
  402.    }
  403. }
  404.